/*
 *  Copyright 2008 The Apache Software Foundation
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package org.apache.ibatis.ibator.internal.db;

import java.util.HashSet;
import java.util.Set;

/**
 * This class contains a somewhat comprehensive list of SQL
 * reserved words.  Since different databases have different
 * reserved words, this list is inclusive of many different databases -
 * so it may include words that are not reserved in some
 * databases.
 *
 * This list is based on the list from Drupal Handbook:
 *   http://drupal.org/node/141051
 * With additions for DB2
 *
 * @author Jeff Butler
 *
 */
public class SqlReservedWords {

    private static Set<String> RESERVED_WORDS;

    static {
        String[] words = {
                "A", //$NON-NLS-1$
                "ABORT", //$NON-NLS-1$
                "ABS", //$NON-NLS-1$
                "ABSOLUTE", //$NON-NLS-1$
                "ACCESS", //$NON-NLS-1$
                "ACTION", //$NON-NLS-1$
                "ADA", //$NON-NLS-1$
                "ADD",  // DB2 //$NON-NLS-1$
                "ADMIN", //$NON-NLS-1$
                "AFTER",  // DB2 //$NON-NLS-1$
                "AGGREGATE", //$NON-NLS-1$
                "ALIAS",  // DB2 //$NON-NLS-1$
                "ALL",  // DB2 //$NON-NLS-1$
                "ALLOCATE",  // DB2 //$NON-NLS-1$
                "ALLOW",  // DB2 //$NON-NLS-1$
                "ALSO", //$NON-NLS-1$
                "ALTER",  // DB2 //$NON-NLS-1$
                "ALWAYS", //$NON-NLS-1$
                "ANALYSE", //$NON-NLS-1$
                "ANALYZE", //$NON-NLS-1$
                "AND",  // DB2 //$NON-NLS-1$
                "ANY",  // DB2 //$NON-NLS-1$
                "APPLICATION",  // DB2 //$NON-NLS-1$
                "ARE", //$NON-NLS-1$
                "ARRAY", //$NON-NLS-1$
                "AS",  // DB2 //$NON-NLS-1$
                "ASC", //$NON-NLS-1$
                "ASENSITIVE", //$NON-NLS-1$
                "ASSERTION", //$NON-NLS-1$
                "ASSIGNMENT", //$NON-NLS-1$
                "ASSOCIATE",  // DB2 //$NON-NLS-1$
                "ASUTIME",  // DB2 //$NON-NLS-1$
                "ASYMMETRIC", //$NON-NLS-1$
                "AT", //$NON-NLS-1$
                "ATOMIC", //$NON-NLS-1$
                "ATTRIBUTE", //$NON-NLS-1$
                "ATTRIBUTES", //$NON-NLS-1$
                "AUDIT",  // DB2 //$NON-NLS-1$
                "AUTHORIZATION",  // DB2 //$NON-NLS-1$
                "AUTO_INCREMENT", //$NON-NLS-1$
                "AUX",  // DB2 //$NON-NLS-1$
                "AUXILIARY",  // DB2 //$NON-NLS-1$
                "AVG", //$NON-NLS-1$
                "AVG_ROW_LENGTH", //$NON-NLS-1$
                "BACKUP", //$NON-NLS-1$
                "BACKWARD", //$NON-NLS-1$
                "BEFORE",  // DB2 //$NON-NLS-1$
                "BEGIN",  // DB2 //$NON-NLS-1$
                "BERNOULLI", //$NON-NLS-1$
                "BETWEEN",  // DB2 //$NON-NLS-1$
                "BIGINT", //$NON-NLS-1$
                "BINARY",  // DB2 //$NON-NLS-1$
                "BIT", //$NON-NLS-1$
                "BIT_LENGTH", //$NON-NLS-1$
                "BITVAR", //$NON-NLS-1$
                "BLOB", //$NON-NLS-1$
                "BOOL", //$NON-NLS-1$
                "BOOLEAN", //$NON-NLS-1$
                "BOTH", //$NON-NLS-1$
                "BREADTH", //$NON-NLS-1$
                "BREAK", //$NON-NLS-1$
                "BROWSE", //$NON-NLS-1$
                "BUFFERPOOL",  // DB2 //$NON-NLS-1$
                "BULK", //$NON-NLS-1$
                "BY",  // DB2 //$NON-NLS-1$
                "C", //$NON-NLS-1$
                "CACHE",  // DB2 //$NON-NLS-1$
                "CALL",  // DB2 //$NON-NLS-1$
                "CALLED",  // DB2 //$NON-NLS-1$
                "CAPTURE",  // DB2 //$NON-NLS-1$
                "CARDINALITY",  // DB2 //$NON-NLS-1$
                "CASCADE", //$NON-NLS-1$
                "CASCADED",  // DB2 //$NON-NLS-1$
                "CASE",  // DB2 //$NON-NLS-1$
                "CAST",  // DB2 //$NON-NLS-1$
                "CATALOG", //$NON-NLS-1$
                "CATALOG_NAME", //$NON-NLS-1$
                "CCSID",  // DB2 //$NON-NLS-1$
                "CEIL", //$NON-NLS-1$
                "CEILING", //$NON-NLS-1$
                "CHAIN", //$NON-NLS-1$
                "CHANGE", //$NON-NLS-1$
                "CHAR",  // DB2 //$NON-NLS-1$
                "CHAR_LENGTH", //$NON-NLS-1$
                "CHARACTER",  // DB2 //$NON-NLS-1$
                "CHARACTER_LENGTH", //$NON-NLS-1$
                "CHARACTER_SET_CATALOG", //$NON-NLS-1$
                "CHARACTER_SET_NAME", //$NON-NLS-1$
                "CHARACTER_SET_SCHEMA", //$NON-NLS-1$
                "CHARACTERISTICS", //$NON-NLS-1$
                "CHARACTERS", //$NON-NLS-1$
                "CHECK",  // DB2 //$NON-NLS-1$
                "CHECKED", //$NON-NLS-1$
                "CHECKPOINT", //$NON-NLS-1$
                "CHECKSUM", //$NON-NLS-1$
                "CLASS", //$NON-NLS-1$
                "CLASS_ORIGIN", //$NON-NLS-1$
                "CLOB", //$NON-NLS-1$
                "CLOSE",  // DB2 //$NON-NLS-1$
                "CLUSTER",  // DB2 //$NON-NLS-1$
                "CLUSTERED", //$NON-NLS-1$
                "COALESCE", //$NON-NLS-1$
                "COBOL", //$NON-NLS-1$
                "COLLATE", //$NON-NLS-1$
                "COLLATION", //$NON-NLS-1$
                "COLLATION_CATALOG", //$NON-NLS-1$
                "COLLATION_NAME", //$NON-NLS-1$
                "COLLATION_SCHEMA", //$NON-NLS-1$
                "COLLECT", //$NON-NLS-1$
                "COLLECTION",  // DB2 //$NON-NLS-1$
                "COLLID",  // DB2 //$NON-NLS-1$
                "COLUMN",  // DB2 //$NON-NLS-1$
                "COLUMN_NAME", //$NON-NLS-1$
                "COLUMNS", //$NON-NLS-1$
                "COMMAND_FUNCTION", //$NON-NLS-1$
                "COMMAND_FUNCTION_CODE", //$NON-NLS-1$
                "COMMENT",  // DB2 //$NON-NLS-1$
                "COMMIT",  // DB2 //$NON-NLS-1$
                "COMMITTED", //$NON-NLS-1$
                "COMPLETION", //$NON-NLS-1$
                "COMPRESS", //$NON-NLS-1$
                "COMPUTE", //$NON-NLS-1$
                "CONCAT",  // DB2 //$NON-NLS-1$
                "CONDITION",  // DB2 //$NON-NLS-1$
                "CONDITION_NUMBER", //$NON-NLS-1$
                "CONNECT",  // DB2 //$NON-NLS-1$
                "CONNECTION",  // DB2 //$NON-NLS-1$
                "CONNECTION_NAME", //$NON-NLS-1$
                "CONSTRAINT",  // DB2 //$NON-NLS-1$
                "CONSTRAINT_CATALOG", //$NON-NLS-1$
                "CONSTRAINT_NAME", //$NON-NLS-1$
                "CONSTRAINT_SCHEMA", //$NON-NLS-1$
                "CONSTRAINTS", //$NON-NLS-1$
                "CONSTRUCTOR", //$NON-NLS-1$
                "CONTAINS",  // DB2 //$NON-NLS-1$
                "CONTAINSTABLE", //$NON-NLS-1$
                "CONTINUE",  // DB2 //$NON-NLS-1$
                "CONVERSION", //$NON-NLS-1$
                "CONVERT", //$NON-NLS-1$
                "COPY", //$NON-NLS-1$
                "CORR", //$NON-NLS-1$
                "CORRESPONDING", //$NON-NLS-1$
                "COUNT",  // DB2 //$NON-NLS-1$
                "COUNT_BIG",  // DB2 //$NON-NLS-1$
                "COVAR_POP", //$NON-NLS-1$
                "COVAR_SAMP", //$NON-NLS-1$
                "CREATE",  // DB2 //$NON-NLS-1$
                "CREATEDB", //$NON-NLS-1$
                "CREATEROLE", //$NON-NLS-1$
                "CREATEUSER", //$NON-NLS-1$
                "CROSS",  // DB2 //$NON-NLS-1$
                "CSV", //$NON-NLS-1$
                "CUBE", //$NON-NLS-1$
                "CUME_DIST", //$NON-NLS-1$
                "CURRENT",  // DB2 //$NON-NLS-1$
                "CURRENT_DATE",  // DB2 //$NON-NLS-1$
                "CURRENT_DEFAULT_TRANSFORM_GROUP", //$NON-NLS-1$
                "CURRENT_LC_CTYPE",  // DB2 //$NON-NLS-1$
                "CURRENT_PATH",  // DB2 //$NON-NLS-1$
                "CURRENT_ROLE", //$NON-NLS-1$
                "CURRENT_SERVER",  // DB2 //$NON-NLS-1$
                "CURRENT_TIME",  // DB2 //$NON-NLS-1$
                "CURRENT_TIMESTAMP",  // DB2 //$NON-NLS-1$
                "CURRENT_TIMEZONE",  // DB2 //$NON-NLS-1$
                "CURRENT_TRANSFORM_GROUP_FOR_TYPE", //$NON-NLS-1$
                "CURRENT_USER",  // DB2 //$NON-NLS-1$
                "CURSOR",  // DB2 //$NON-NLS-1$
                "CURSOR_NAME", //$NON-NLS-1$
                "CYCLE",  // DB2 //$NON-NLS-1$
                "DATA",  // DB2 //$NON-NLS-1$
                "DATABASE",  // DB2 //$NON-NLS-1$
                "DATABASES", //$NON-NLS-1$
                "DATE", //$NON-NLS-1$
                "DATETIME", //$NON-NLS-1$
                "DATETIME_INTERVAL_CODE", //$NON-NLS-1$
                "DATETIME_INTERVAL_PRECISION", //$NON-NLS-1$
                "DAY",  // DB2 //$NON-NLS-1$
                "DAY_HOUR", //$NON-NLS-1$
                "DAY_MICROSECOND", //$NON-NLS-1$
                "DAY_MINUTE", //$NON-NLS-1$
                "DAY_SECOND", //$NON-NLS-1$
                "DAYOFMONTH", //$NON-NLS-1$
                "DAYOFWEEK", //$NON-NLS-1$
                "DAYOFYEAR", //$NON-NLS-1$
                "DAYS",  // DB2 //$NON-NLS-1$
                "DB2GENERAL",  // DB2 //$NON-NLS-1$
                "DB2GNRL",  // DB2 //$NON-NLS-1$
                "DB2SQL",  // DB2 //$NON-NLS-1$
                "DBCC", //$NON-NLS-1$
                "DBINFO",   // DB2 //$NON-NLS-1$
                "DEALLOCATE", //$NON-NLS-1$
                "DEC", //$NON-NLS-1$
                "DECIMAL", //$NON-NLS-1$
                "DECLARE",  // DB2 //$NON-NLS-1$
                "DEFAULT",  // DB2 //$NON-NLS-1$
                "DEFAULTS",  // DB2 //$NON-NLS-1$
                "DEFERRABLE", //$NON-NLS-1$
                "DEFERRED", //$NON-NLS-1$
                "DEFINED", //$NON-NLS-1$
                "DEFINER", //$NON-NLS-1$
                "DEFINITION",  // DB2 //$NON-NLS-1$
                "DEGREE", //$NON-NLS-1$
                "DELAY_KEY_WRITE", //$NON-NLS-1$
                "DELAYED", //$NON-NLS-1$
                "DELETE",  // DB2 //$NON-NLS-1$
                "DELIMITER", //$NON-NLS-1$
                "DELIMITERS", //$NON-NLS-1$
                "DENSE_RANK", //$NON-NLS-1$
                "DENY", //$NON-NLS-1$
                "DEPTH", //$NON-NLS-1$
                "DEREF", //$NON-NLS-1$
                "DERIVED", //$NON-NLS-1$
                "DESC", //$NON-NLS-1$
                "DESCRIBE", //$NON-NLS-1$
                "DESCRIPTOR",  // DB2 //$NON-NLS-1$
                "DESTROY", //$NON-NLS-1$
                "DESTRUCTOR", //$NON-NLS-1$
                "DETERMINISTIC",  // DB2 //$NON-NLS-1$
                "DIAGNOSTICS", //$NON-NLS-1$
                "DICTIONARY", //$NON-NLS-1$
                "DISABLE", //$NON-NLS-1$
                "DISALLOW",   // DB2 //$NON-NLS-1$
                "DISCONNECT",  // DB2 //$NON-NLS-1$
                "DISK", //$NON-NLS-1$
                "DISPATCH", //$NON-NLS-1$
                "DISTINCT",  // DB2 //$NON-NLS-1$
                "DISTINCTROW", //$NON-NLS-1$
                "DISTRIBUTED", //$NON-NLS-1$
                "DIV", //$NON-NLS-1$
                "DO",  // DB2 //$NON-NLS-1$
                "DOMAIN", //$NON-NLS-1$
                "DOUBLE",  // DB2 //$NON-NLS-1$
                "DROP",  // DB2 //$NON-NLS-1$
                "DSNHATTR",  // DB2 //$NON-NLS-1$
                "DSSIZE",  // DB2 //$NON-NLS-1$
                "DUAL", //$NON-NLS-1$
                "DUMMY", //$NON-NLS-1$
                "DUMP", //$NON-NLS-1$
                "DYNAMIC",  // DB2 //$NON-NLS-1$
                "DYNAMIC_FUNCTION", //$NON-NLS-1$
                "DYNAMIC_FUNCTION_CODE", //$NON-NLS-1$
                "EACH",  // DB2 //$NON-NLS-1$
                "EDITPROC",  // DB2 //$NON-NLS-1$
                "ELEMENT", //$NON-NLS-1$
                "ELSE",  // DB2 //$NON-NLS-1$
                "ELSEIF",  // DB2 //$NON-NLS-1$
                "ENABLE", //$NON-NLS-1$
                "ENCLOSED", //$NON-NLS-1$
                "ENCODING",  // DB2 //$NON-NLS-1$
                "ENCRYPTED", //$NON-NLS-1$
                "END",  // DB2 //$NON-NLS-1$
                "END-EXEC",  // DB2 //$NON-NLS-1$
                "END-EXEC1",  // DB2 //$NON-NLS-1$
                "ENUM", //$NON-NLS-1$
                "EQUALS", //$NON-NLS-1$
                "ERASE",  // DB2 //$NON-NLS-1$
                "ERRLVL", //$NON-NLS-1$
                "ESCAPE",  // DB2 //$NON-NLS-1$
                "ESCAPED", //$NON-NLS-1$
                "EVERY", //$NON-NLS-1$
                "EXCEPT",  // DB2 //$NON-NLS-1$
                "EXCEPTION",  // DB2 //$NON-NLS-1$
                "EXCLUDE", //$NON-NLS-1$
                "EXCLUDING",  // DB2 //$NON-NLS-1$
                "EXCLUSIVE", //$NON-NLS-1$
                "EXEC", //$NON-NLS-1$
                "EXECUTE",  // DB2 //$NON-NLS-1$
                "EXISTING", //$NON-NLS-1$
                "EXISTS",  // DB2 //$NON-NLS-1$
                "EXIT",  // DB2 //$NON-NLS-1$
                "EXP", //$NON-NLS-1$
                "EXPLAIN", //$NON-NLS-1$
                "EXTERNAL",  // DB2 //$NON-NLS-1$
                "EXTRACT", //$NON-NLS-1$
                "FALSE", //$NON-NLS-1$
                "FENCED",  // DB2 //$NON-NLS-1$
                "FETCH",  // DB2 //$NON-NLS-1$
                "FIELDPROC",  // DB2 //$NON-NLS-1$
                "FIELDS", //$NON-NLS-1$
                "FILE",  // DB2 //$NON-NLS-1$
                "FILLFACTOR", //$NON-NLS-1$
                "FILTER", //$NON-NLS-1$
                "FINAL",  // DB2 //$NON-NLS-1$
                "FIRST", //$NON-NLS-1$
                "FLOAT", //$NON-NLS-1$
                "FLOAT4", //$NON-NLS-1$
                "FLOAT8", //$NON-NLS-1$
                "FLOOR", //$NON-NLS-1$
                "FLUSH", //$NON-NLS-1$
                "FOLLOWING", //$NON-NLS-1$
                "FOR",  // DB2 //$NON-NLS-1$
                "FORCE", //$NON-NLS-1$
                "FOREIGN",  // DB2 //$NON-NLS-1$
                "FORTRAN", //$NON-NLS-1$
                "FORWARD", //$NON-NLS-1$
                "FOUND", //$NON-NLS-1$
                "FREE",  // DB2 //$NON-NLS-1$
                "FREETEXT", //$NON-NLS-1$
                "FREETEXTTABLE", //$NON-NLS-1$
                "FREEZE", //$NON-NLS-1$
                "FROM",  // DB2 //$NON-NLS-1$
                "FULL",  // DB2 //$NON-NLS-1$
                "FULLTEXT", //$NON-NLS-1$
                "FUNCTION",  // DB2 //$NON-NLS-1$
                "FUSION", //$NON-NLS-1$
                "G", //$NON-NLS-1$
                "GENERAL",  // DB2 //$NON-NLS-1$
                "GENERATED",  // DB2 //$NON-NLS-1$
                "GET",  // DB2 //$NON-NLS-1$
                "GLOBAL",  // DB2 //$NON-NLS-1$
                "GO",  // DB2 //$NON-NLS-1$
                "GOTO",  // DB2 //$NON-NLS-1$
                "GRANT",  // DB2 //$NON-NLS-1$
                "GRANTED", //$NON-NLS-1$
                "GRANTS", //$NON-NLS-1$
                "GRAPHIC",  // DB2 //$NON-NLS-1$
                "GREATEST", //$NON-NLS-1$
                "GROUP",  // DB2 //$NON-NLS-1$
                "GROUPING", //$NON-NLS-1$
                "HANDLER",  // DB2 //$NON-NLS-1$
                "HAVING",  // DB2 //$NON-NLS-1$
                "HEADER", //$NON-NLS-1$
                "HEAP", //$NON-NLS-1$
                "HIERARCHY", //$NON-NLS-1$
                "HIGH_PRIORITY", //$NON-NLS-1$
                "HOLD",  // DB2 //$NON-NLS-1$
                "HOLDLOCK", //$NON-NLS-1$
                "HOST", //$NON-NLS-1$
                "HOSTS", //$NON-NLS-1$
                "HOUR",  // DB2 //$NON-NLS-1$
                "HOUR_MICROSECOND", //$NON-NLS-1$
                "HOUR_MINUTE", //$NON-NLS-1$
                "HOUR_SECOND", //$NON-NLS-1$
                "HOURS",  // DB2 //$NON-NLS-1$
                "IDENTIFIED", //$NON-NLS-1$
                "IDENTITY",  // DB2 //$NON-NLS-1$
                "IDENTITY_INSERT", //$NON-NLS-1$
                "IDENTITYCOL", //$NON-NLS-1$
                "IF",  // DB2 //$NON-NLS-1$
                "IGNORE", //$NON-NLS-1$
                "ILIKE", //$NON-NLS-1$
                "IMMEDIATE",  // DB2 //$NON-NLS-1$
                "IMMUTABLE", //$NON-NLS-1$
                "IMPLEMENTATION", //$NON-NLS-1$
                "IMPLICIT", //$NON-NLS-1$
                "IN",  // DB2 //$NON-NLS-1$
                "INCLUDE", //$NON-NLS-1$
                "INCLUDING",  // DB2 //$NON-NLS-1$
                "INCREMENT",  // DB2 //$NON-NLS-1$
                "INDEX",  // DB2 //$NON-NLS-1$
                "INDICATOR",  // DB2 //$NON-NLS-1$
                "INFILE", //$NON-NLS-1$
                "INFIX", //$NON-NLS-1$
                "INHERIT",  // DB2 //$NON-NLS-1$
                "INHERITS", //$NON-NLS-1$
                "INITIAL", //$NON-NLS-1$
                "INITIALIZE", //$NON-NLS-1$
                "INITIALLY", //$NON-NLS-1$
                "INNER",  // DB2 //$NON-NLS-1$
                "INOUT",  // DB2 //$NON-NLS-1$
                "INPUT", //$NON-NLS-1$
                "INSENSITIVE",  // DB2 //$NON-NLS-1$
                "INSERT",  // DB2 //$NON-NLS-1$
                "INSERT_ID", //$NON-NLS-1$
                "INSTANCE", //$NON-NLS-1$
                "INSTANTIABLE", //$NON-NLS-1$
                "INSTEAD", //$NON-NLS-1$
                "INT", //$NON-NLS-1$
                "INT1", //$NON-NLS-1$
                "INT2", //$NON-NLS-1$
                "INT3", //$NON-NLS-1$
                "INT4", //$NON-NLS-1$
                "INT8", //$NON-NLS-1$
                "INTEGER", //$NON-NLS-1$
                "INTEGRITY",   // DB2 //$NON-NLS-1$
                "INTERSECT", //$NON-NLS-1$
                "INTERSECTION", //$NON-NLS-1$
                "INTERVAL", //$NON-NLS-1$
                "INTO",  // DB2 //$NON-NLS-1$
                "INVOKER", //$NON-NLS-1$
                "IS",  // DB2 //$NON-NLS-1$
                "ISAM", //$NON-NLS-1$
                "ISNULL", //$NON-NLS-1$
                "ISOBID",  // DB2 //$NON-NLS-1$
                "ISOLATION",  // DB2 //$NON-NLS-1$
                "ITERATE",  // DB2 //$NON-NLS-1$
                "JAR",  // DB2 //$NON-NLS-1$
                "JAVA",  // DB2 //$NON-NLS-1$
                "JOIN",  // DB2 //$NON-NLS-1$
                "K", //$NON-NLS-1$
                "KEY",  // DB2 //$NON-NLS-1$
                "KEY_MEMBER", //$NON-NLS-1$
                "KEY_TYPE", //$NON-NLS-1$
                "KEYS", //$NON-NLS-1$
                "KILL", //$NON-NLS-1$
                "LABEL",  // DB2 //$NON-NLS-1$
                "LANCOMPILER", //$NON-NLS-1$
                "LANGUAGE",  // DB2 //$NON-NLS-1$
                "LARGE", //$NON-NLS-1$
                "LAST", //$NON-NLS-1$
                "LAST_INSERT_ID", //$NON-NLS-1$
                "LATERAL", //$NON-NLS-1$
                "LC_CTYPE",  // DB2 //$NON-NLS-1$
                "LEADING", //$NON-NLS-1$
                "LEAST", //$NON-NLS-1$
                "LEAVE",  // DB2 //$NON-NLS-1$
                "LEFT",  // DB2 //$NON-NLS-1$
                "LENGTH", //$NON-NLS-1$
                "LESS", //$NON-NLS-1$
                "LEVEL", //$NON-NLS-1$
                "LIKE",  // DB2 //$NON-NLS-1$
                "LIMIT", //$NON-NLS-1$
                "LINENO", //$NON-NLS-1$
                "LINES", //$NON-NLS-1$
                "LINKTYPE",  // DB2 //$NON-NLS-1$
                "LISTEN", //$NON-NLS-1$
                "LN", //$NON-NLS-1$
                "LOAD", //$NON-NLS-1$
                "LOCAL",  // DB2 //$NON-NLS-1$
                "LOCALE",  // DB2 //$NON-NLS-1$
                "LOCALTIME", //$NON-NLS-1$
                "LOCALTIMESTAMP", //$NON-NLS-1$
                "LOCATION", //$NON-NLS-1$
                "LOCATOR",  // DB2 //$NON-NLS-1$
                "LOCATORS",  // DB2 //$NON-NLS-1$
                "LOCK",  // DB2 //$NON-NLS-1$
                "LOCKMAX",  // DB2 //$NON-NLS-1$
                "LOCKSIZE",  // DB2 //$NON-NLS-1$
                "LOGIN", //$NON-NLS-1$
                "LOGS", //$NON-NLS-1$
                "LONG",  // DB2 //$NON-NLS-1$
                "LONGBLOB", //$NON-NLS-1$
                "LONGTEXT", //$NON-NLS-1$
                "LOOP",  // DB2 //$NON-NLS-1$
                "LOW_PRIORITY", //$NON-NLS-1$
                "LOWER", //$NON-NLS-1$
                "M", //$NON-NLS-1$
                "MAP", //$NON-NLS-1$
                "MATCH", //$NON-NLS-1$
                "MATCHED", //$NON-NLS-1$
                "MAX", //$NON-NLS-1$
                "MAX_ROWS", //$NON-NLS-1$
                "MAXEXTENTS", //$NON-NLS-1$
                "MAXVALUE",  // DB2 //$NON-NLS-1$
                "MEDIUMBLOB", //$NON-NLS-1$
                "MEDIUMINT", //$NON-NLS-1$
                "MEDIUMTEXT", //$NON-NLS-1$
                "MEMBER", //$NON-NLS-1$
                "MERGE", //$NON-NLS-1$
                "MESSAGE_LENGTH", //$NON-NLS-1$
                "MESSAGE_OCTET_LENGTH", //$NON-NLS-1$
                "MESSAGE_TEXT", //$NON-NLS-1$
                "METHOD", //$NON-NLS-1$
                "MICROSECOND",  // DB2 //$NON-NLS-1$
                "MICROSECONDS",  // DB2 //$NON-NLS-1$
                "MIDDLEINT", //$NON-NLS-1$
                "MIN", //$NON-NLS-1$
                "MIN_ROWS", //$NON-NLS-1$
                "MINUS", //$NON-NLS-1$
                "MINUTE",  // DB2 //$NON-NLS-1$
                "MINUTE_MICROSECOND", //$NON-NLS-1$
                "MINUTE_SECOND", //$NON-NLS-1$
                "MINUTES",  // DB2 //$NON-NLS-1$
                "MINVALUE",  // DB2 //$NON-NLS-1$
                "MLSLABEL", //$NON-NLS-1$
                "MOD", //$NON-NLS-1$
                "MODE",  // DB2 //$NON-NLS-1$
                "MODIFIES",  // DB2 //$NON-NLS-1$
                "MODIFY", //$NON-NLS-1$
                "MODULE", //$NON-NLS-1$
                "MONTH",  // DB2 //$NON-NLS-1$
                "MONTHNAME", //$NON-NLS-1$
                "MONTHS",  // DB2 //$NON-NLS-1$
                "MORE", //$NON-NLS-1$
                "MOVE", //$NON-NLS-1$
                "MULTISET", //$NON-NLS-1$
                "MUMPS", //$NON-NLS-1$
                "MYISAM", //$NON-NLS-1$
                "NAME", //$NON-NLS-1$
                "NAMES", //$NON-NLS-1$
                "NATIONAL", //$NON-NLS-1$
                "NATURAL", //$NON-NLS-1$
                "NCHAR", //$NON-NLS-1$
                "NCLOB", //$NON-NLS-1$
                "NESTING", //$NON-NLS-1$
                "NEW",  // DB2 //$NON-NLS-1$
                "NEW_TABLE",  // DB2 //$NON-NLS-1$
                "NEXT", //$NON-NLS-1$
                "NO",  // DB2 //$NON-NLS-1$
                "NO_WRITE_TO_BINLOG", //$NON-NLS-1$
                "NOAUDIT", //$NON-NLS-1$
                "NOCACHE",  // DB2 //$NON-NLS-1$
                "NOCHECK", //$NON-NLS-1$
                "NOCOMPRESS", //$NON-NLS-1$
                "NOCREATEDB", //$NON-NLS-1$
                "NOCREATEROLE", //$NON-NLS-1$
                "NOCREATEUSER", //$NON-NLS-1$
                "NOCYCLE",  // DB2 //$NON-NLS-1$
                "NODENAME",  // DB2 //$NON-NLS-1$
                "NODENUMBER",  // DB2 //$NON-NLS-1$
                "NOINHERIT", //$NON-NLS-1$
                "NOLOGIN", //$NON-NLS-1$
                "NOMAXVALUE",  // DB2 //$NON-NLS-1$
                "NOMINVALUE",  // DB2 //$NON-NLS-1$
                "NONCLUSTERED", //$NON-NLS-1$
                "NONE", //$NON-NLS-1$
                "NOORDER",  // DB2 //$NON-NLS-1$
                "NORMALIZE", //$NON-NLS-1$
                "NORMALIZED", //$NON-NLS-1$
                "NOSUPERUSER", //$NON-NLS-1$
                "NOT",  // DB2 //$NON-NLS-1$
                "NOTHING", //$NON-NLS-1$
                "NOTIFY", //$NON-NLS-1$
                "NOTNULL", //$NON-NLS-1$
                "NOWAIT", //$NON-NLS-1$
                "NULL",  // DB2 //$NON-NLS-1$
                "NULLABLE", //$NON-NLS-1$
                "NULLIF", //$NON-NLS-1$
                "NULLS",  // DB2 //$NON-NLS-1$
                "NUMBER", //$NON-NLS-1$
                "NUMERIC", //$NON-NLS-1$
                "NUMPARTS",  // DB2 //$NON-NLS-1$
                "OBID",  // DB2 //$NON-NLS-1$
                "OBJECT", //$NON-NLS-1$
                "OCTET_LENGTH", //$NON-NLS-1$
                "OCTETS", //$NON-NLS-1$
                "OF",  // DB2 //$NON-NLS-1$
                "OFF", //$NON-NLS-1$
                "OFFLINE", //$NON-NLS-1$
                "OFFSET", //$NON-NLS-1$
                "OFFSETS", //$NON-NLS-1$
                "OIDS", //$NON-NLS-1$
                "OLD",  // DB2 //$NON-NLS-1$
                "OLD_TABLE",  // DB2 //$NON-NLS-1$
                "ON",  // DB2 //$NON-NLS-1$
                "ONLINE", //$NON-NLS-1$
                "ONLY", //$NON-NLS-1$
                "OPEN",  // DB2 //$NON-NLS-1$
                "OPENDATASOURCE", //$NON-NLS-1$
                "OPENQUERY", //$NON-NLS-1$
                "OPENROWSET", //$NON-NLS-1$
                "OPENXML", //$NON-NLS-1$
                "OPERATION", //$NON-NLS-1$
                "OPERATOR", //$NON-NLS-1$
                "OPTIMIZATION",  // DB2 //$NON-NLS-1$
                "OPTIMIZE",  // DB2 //$NON-NLS-1$
                "OPTION",  // DB2 //$NON-NLS-1$
                "OPTIONALLY", //$NON-NLS-1$
                "OPTIONS", //$NON-NLS-1$
                "OR",  // DB2 //$NON-NLS-1$
                "ORDER",  // DB2 //$NON-NLS-1$
                "ORDERING", //$NON-NLS-1$
                "ORDINALITY", //$NON-NLS-1$
                "OTHERS", //$NON-NLS-1$
                "OUT",  // DB2 //$NON-NLS-1$
                "OUTER",  // DB2 //$NON-NLS-1$
                "OUTFILE", //$NON-NLS-1$
                "OUTPUT", //$NON-NLS-1$
                "OVER", //$NON-NLS-1$
                "OVERLAPS", //$NON-NLS-1$
                "OVERLAY", //$NON-NLS-1$
                "OVERRIDING",  // DB2 //$NON-NLS-1$
                "OWNER", //$NON-NLS-1$
                "PACK_KEYS", //$NON-NLS-1$
                "PACKAGE",  // DB2 //$NON-NLS-1$
                "PAD", //$NON-NLS-1$
                "PARAMETER",  // DB2 //$NON-NLS-1$
                "PARAMETER_MODE", //$NON-NLS-1$
                "PARAMETER_NAME", //$NON-NLS-1$
                "PARAMETER_ORDINAL_POSITION", //$NON-NLS-1$
                "PARAMETER_SPECIFIC_CATALOG", //$NON-NLS-1$
                "PARAMETER_SPECIFIC_NAME", //$NON-NLS-1$
                "PARAMETER_SPECIFIC_SCHEMA", //$NON-NLS-1$
                "PARAMETERS", //$NON-NLS-1$
                "PART",  // DB2 //$NON-NLS-1$
                "PARTIAL", //$NON-NLS-1$
                "PARTITION",  // DB2 //$NON-NLS-1$
                "PASCAL", //$NON-NLS-1$
                "PASSWORD", //$NON-NLS-1$
                "PATH",  // DB2 //$NON-NLS-1$
                "PCTFREE", //$NON-NLS-1$
                "PERCENT", //$NON-NLS-1$
                "PERCENT_RANK", //$NON-NLS-1$
                "PERCENTILE_CONT", //$NON-NLS-1$
                "PERCENTILE_DISC", //$NON-NLS-1$
                "PIECESIZE",  // DB2 //$NON-NLS-1$
                "PLACING", //$NON-NLS-1$
                "PLAN",  // DB2 //$NON-NLS-1$
                "PLI", //$NON-NLS-1$
                "POSITION",  // DB2 //$NON-NLS-1$
                "POSTFIX", //$NON-NLS-1$
                "POWER", //$NON-NLS-1$
                "PRECEDING", //$NON-NLS-1$
                "PRECISION",  // DB2 //$NON-NLS-1$
                "PREFIX", //$NON-NLS-1$
                "PREORDER", //$NON-NLS-1$
                "PREPARE",  // DB2 //$NON-NLS-1$
                "PREPARED", //$NON-NLS-1$
                "PRESERVE", //$NON-NLS-1$
                "PRIMARY",  // DB2 //$NON-NLS-1$
                "PRINT", //$NON-NLS-1$
                "PRIOR", //$NON-NLS-1$
                "PRIQTY",  // DB2 //$NON-NLS-1$
                "PRIVILEGES",  // DB2 //$NON-NLS-1$
                "PROC", //$NON-NLS-1$
                "PROCEDURAL", //$NON-NLS-1$
                "PROCEDURE",  // DB2 //$NON-NLS-1$
                "PROCESS", //$NON-NLS-1$
                "PROCESSLIST", //$NON-NLS-1$
                "PROGRAM",  // DB2 //$NON-NLS-1$
                "PSID",  // DB2 //$NON-NLS-1$
                "PUBLIC", //$NON-NLS-1$
                "PURGE", //$NON-NLS-1$
                "QUERYNO",  // DB2 //$NON-NLS-1$
                "QUOTE", //$NON-NLS-1$
                "RAID0", //$NON-NLS-1$
                "RAISERROR", //$NON-NLS-1$
                "RANGE", //$NON-NLS-1$
                "RANK", //$NON-NLS-1$
                "RAW", //$NON-NLS-1$
                "READ",  // DB2 //$NON-NLS-1$
                "READS",  // DB2 //$NON-NLS-1$
                "READTEXT", //$NON-NLS-1$
                "REAL", //$NON-NLS-1$
                "RECHECK", //$NON-NLS-1$
                "RECONFIGURE", //$NON-NLS-1$
                "RECOVERY",  // DB2 //$NON-NLS-1$
                "RECURSIVE", //$NON-NLS-1$
                "REF", //$NON-NLS-1$
                "REFERENCES",  // DB2 //$NON-NLS-1$
                "REFERENCING",  // DB2 //$NON-NLS-1$
                "REGEXP", //$NON-NLS-1$
                "REGR_AVGX", //$NON-NLS-1$
                "REGR_AVGY", //$NON-NLS-1$
                "REGR_COUNT", //$NON-NLS-1$
                "REGR_INTERCEPT", //$NON-NLS-1$
                "REGR_R2", //$NON-NLS-1$
                "REGR_SLOPE", //$NON-NLS-1$
                "REGR_SXX", //$NON-NLS-1$
                "REGR_SXY", //$NON-NLS-1$
                "REGR_SYY", //$NON-NLS-1$
                "REINDEX", //$NON-NLS-1$
                "RELATIVE", //$NON-NLS-1$
                "RELEASE",  // DB2 //$NON-NLS-1$
                "RELOAD", //$NON-NLS-1$
                "RENAME",  // DB2 //$NON-NLS-1$
                "REPEAT",  // DB2 //$NON-NLS-1$
                "REPEATABLE", //$NON-NLS-1$
                "REPLACE", //$NON-NLS-1$
                "REPLICATION", //$NON-NLS-1$
                "REQUIRE", //$NON-NLS-1$
                "RESET",  // DB2 //$NON-NLS-1$
                "RESIGNAL",  // DB2 //$NON-NLS-1$
                "RESOURCE", //$NON-NLS-1$
                "RESTART",  // DB2 //$NON-NLS-1$
                "RESTORE", //$NON-NLS-1$
                "RESTRICT",  // DB2 //$NON-NLS-1$
                "RESULT",  // DB2 //$NON-NLS-1$
                "RESULT_SET_LOCATOR",  // DB2 //$NON-NLS-1$
                "RETURN",  // DB2 //$NON-NLS-1$
                "RETURNED_CARDINALITY", //$NON-NLS-1$
                "RETURNED_LENGTH", //$NON-NLS-1$
                "RETURNED_OCTET_LENGTH", //$NON-NLS-1$
                "RETURNED_SQLSTATE", //$NON-NLS-1$
                "RETURNS",  // DB2 //$NON-NLS-1$
                "REVOKE",  // DB2 //$NON-NLS-1$
                "RIGHT",  // DB2 //$NON-NLS-1$
                "RLIKE", //$NON-NLS-1$
                "ROLE", //$NON-NLS-1$
                "ROLLBACK",  // DB2 //$NON-NLS-1$
                "ROLLUP", //$NON-NLS-1$
                "ROUTINE",  // DB2 //$NON-NLS-1$
                "ROUTINE_CATALOG", //$NON-NLS-1$
                "ROUTINE_NAME", //$NON-NLS-1$
                "ROUTINE_SCHEMA", //$NON-NLS-1$
                "ROW",  // DB2 //$NON-NLS-1$
                "ROW_COUNT", //$NON-NLS-1$
                "ROW_NUMBER", //$NON-NLS-1$
                "ROWCOUNT", //$NON-NLS-1$
                "ROWGUIDCOL", //$NON-NLS-1$
                "ROWID", //$NON-NLS-1$
                "ROWNUM", //$NON-NLS-1$
                "ROWS",  // DB2 //$NON-NLS-1$
                "RRN",  // DB2 //$NON-NLS-1$
                "RULE", //$NON-NLS-1$
                "RUN",  // DB2 //$NON-NLS-1$
                "SAVE", //$NON-NLS-1$
                "SAVEPOINT",  // DB2 //$NON-NLS-1$
                "SCALE", //$NON-NLS-1$
                "SCHEMA",  // DB2 //$NON-NLS-1$
                "SCHEMA_NAME", //$NON-NLS-1$
                "SCHEMAS", //$NON-NLS-1$
                "SCOPE", //$NON-NLS-1$
                "SCOPE_CATALOG", //$NON-NLS-1$
                "SCOPE_NAME", //$NON-NLS-1$
                "SCOPE_SCHEMA", //$NON-NLS-1$
                "SCRATCHPAD",  // DB2 //$NON-NLS-1$
                "SCROLL", //$NON-NLS-1$
                "SEARCH", //$NON-NLS-1$
                "SECOND",  // DB2 //$NON-NLS-1$
                "SECOND_MICROSECOND", //$NON-NLS-1$
                "SECONDS",  // DB2 //$NON-NLS-1$
                "SECQTY",  // DB2 //$NON-NLS-1$
                "SECTION", //$NON-NLS-1$
                "SECURITY",  // DB2 //$NON-NLS-1$
                "SELECT",  // DB2 //$NON-NLS-1$
                "SELF", //$NON-NLS-1$
                "SENSITIVE",  // DB2 //$NON-NLS-1$
                "SEPARATOR", //$NON-NLS-1$
                "SEQUENCE", //$NON-NLS-1$
                "SERIALIZABLE", //$NON-NLS-1$
                "SERVER_NAME", //$NON-NLS-1$
                "SESSION", //$NON-NLS-1$
                "SESSION_USER", //$NON-NLS-1$
                "SET",  // DB2 //$NON-NLS-1$
                "SETOF", //$NON-NLS-1$
                "SETS", //$NON-NLS-1$
                "SETUSER", //$NON-NLS-1$
                "SHARE", //$NON-NLS-1$
                "SHOW", //$NON-NLS-1$
                "SHUTDOWN", //$NON-NLS-1$
                "SIGNAL",  // DB2 //$NON-NLS-1$
                "SIMILAR", //$NON-NLS-1$
                "SIMPLE",  // DB2 //$NON-NLS-1$
                "SIZE", //$NON-NLS-1$
                "SMALLINT", //$NON-NLS-1$
                "SOME",  // DB2 //$NON-NLS-1$
                "SONAME", //$NON-NLS-1$
                "SOURCE",  // DB2 //$NON-NLS-1$
                "SPACE", //$NON-NLS-1$
                "SPATIAL", //$NON-NLS-1$
                "SPECIFIC",  // DB2 //$NON-NLS-1$
                "SPECIFIC_NAME", //$NON-NLS-1$
                "SPECIFICTYPE", //$NON-NLS-1$
                "SQL",  // DB2 //$NON-NLS-1$
                "SQL_BIG_RESULT", //$NON-NLS-1$
                "SQL_BIG_SELECTS", //$NON-NLS-1$
                "SQL_BIG_TABLES", //$NON-NLS-1$
                "SQL_CALC_FOUND_ROWS", //$NON-NLS-1$
                "SQL_LOG_OFF", //$NON-NLS-1$
                "SQL_LOG_UPDATE", //$NON-NLS-1$
                "SQL_LOW_PRIORITY_UPDATES", //$NON-NLS-1$
                "SQL_SELECT_LIMIT", //$NON-NLS-1$
                "SQL_SMALL_RESULT", //$NON-NLS-1$
                "SQL_WARNINGS", //$NON-NLS-1$
                "SQLCA", //$NON-NLS-1$
                "SQLCODE", //$NON-NLS-1$
                "SQLERROR", //$NON-NLS-1$
                "SQLEXCEPTION", //$NON-NLS-1$
                "SQLID",  // DB2 //$NON-NLS-1$
                "SQLSTATE", //$NON-NLS-1$
                "SQLWARNING", //$NON-NLS-1$
                "SQRT", //$NON-NLS-1$
                "SSL", //$NON-NLS-1$
                "STABLE", //$NON-NLS-1$
                "STANDARD",  // DB2 //$NON-NLS-1$
                "START",  // DB2 //$NON-NLS-1$
                "STARTING", //$NON-NLS-1$
                "STATE", //$NON-NLS-1$
                "STATEMENT", //$NON-NLS-1$
                "STATIC",  // DB2 //$NON-NLS-1$
                "STATISTICS", //$NON-NLS-1$
                "STATUS", //$NON-NLS-1$
                "STAY",  // DB2 //$NON-NLS-1$
                "STDDEV_POP", //$NON-NLS-1$
                "STDDEV_SAMP", //$NON-NLS-1$
                "STDIN", //$NON-NLS-1$
                "STDOUT", //$NON-NLS-1$
                "STOGROUP",  // DB2 //$NON-NLS-1$
                "STORAGE", //$NON-NLS-1$
                "STORES",  // DB2 //$NON-NLS-1$
                "STRAIGHT_JOIN", //$NON-NLS-1$
                "STRICT", //$NON-NLS-1$
                "STRING", //$NON-NLS-1$
                "STRUCTURE", //$NON-NLS-1$
                "STYLE",  // DB2 //$NON-NLS-1$
                "SUBCLASS_ORIGIN", //$NON-NLS-1$
                "SUBLIST", //$NON-NLS-1$
                "SUBMULTISET", //$NON-NLS-1$
                "SUBPAGES",  // DB2 //$NON-NLS-1$
                "SUBSTRING",  // DB2 //$NON-NLS-1$
                "SUCCESSFUL", //$NON-NLS-1$
                "SUM", //$NON-NLS-1$
                "SUPERUSER", //$NON-NLS-1$
                "SYMMETRIC", //$NON-NLS-1$
                "SYNONYM",  // DB2 //$NON-NLS-1$
                "SYSDATE", //$NON-NLS-1$
                "SYSFUN",  // DB2 //$NON-NLS-1$
                "SYSIBM",  // DB2 //$NON-NLS-1$
                "SYSID", //$NON-NLS-1$
                "SYSPROC",  // DB2 //$NON-NLS-1$
                "SYSTEM",  // DB2 //$NON-NLS-1$
                "SYSTEM_USER", //$NON-NLS-1$
                "TABLE",  // DB2 //$NON-NLS-1$
                "TABLE_NAME", //$NON-NLS-1$
                "TABLES", //$NON-NLS-1$
                "TABLESAMPLE", //$NON-NLS-1$
                "TABLESPACE",  // DB2 //$NON-NLS-1$
                "TEMP", //$NON-NLS-1$
                "TEMPLATE", //$NON-NLS-1$
                "TEMPORARY", //$NON-NLS-1$
                "TERMINATE", //$NON-NLS-1$
                "TERMINATED", //$NON-NLS-1$
                "TEXT", //$NON-NLS-1$
                "TEXTSIZE", //$NON-NLS-1$
                "THAN", //$NON-NLS-1$
                "THEN",  // DB2 //$NON-NLS-1$
                "TIES", //$NON-NLS-1$
                "TIME", //$NON-NLS-1$
                "TIMESTAMP", //$NON-NLS-1$
                "TIMEZONE_HOUR", //$NON-NLS-1$
                "TIMEZONE_MINUTE", //$NON-NLS-1$
                "TINYBLOB", //$NON-NLS-1$
                "TINYINT", //$NON-NLS-1$
                "TINYTEXT", //$NON-NLS-1$
                "TO",  // DB2 //$NON-NLS-1$
                "TOAST", //$NON-NLS-1$
                "TOP", //$NON-NLS-1$
                "TOP_LEVEL_COUNT", //$NON-NLS-1$
                "TRAILING", //$NON-NLS-1$
                "TRAN", //$NON-NLS-1$
                "TRANSACTION",  // DB2 //$NON-NLS-1$
                "TRANSACTION_ACTIVE", //$NON-NLS-1$
                "TRANSACTIONS_COMMITTED", //$NON-NLS-1$
                "TRANSACTIONS_ROLLED_BACK", //$NON-NLS-1$
                "TRANSFORM", //$NON-NLS-1$
                "TRANSFORMS", //$NON-NLS-1$
                "TRANSLATE", //$NON-NLS-1$
                "TRANSLATION", //$NON-NLS-1$
                "TREAT", //$NON-NLS-1$
                "TRIGGER",  // DB2 //$NON-NLS-1$
                "TRIGGER_CATALOG", //$NON-NLS-1$
                "TRIGGER_NAME", //$NON-NLS-1$
                "TRIGGER_SCHEMA", //$NON-NLS-1$
                "TRIM",  // DB2 //$NON-NLS-1$
                "TRUE", //$NON-NLS-1$
                "TRUNCATE", //$NON-NLS-1$
                "TRUSTED", //$NON-NLS-1$
                "TSEQUAL", //$NON-NLS-1$
                "TYPE",  // DB2 //$NON-NLS-1$
                "UESCAPE", //$NON-NLS-1$
                "UID", //$NON-NLS-1$
                "UNBOUNDED", //$NON-NLS-1$
                "UNCOMMITTED", //$NON-NLS-1$
                "UNDER", //$NON-NLS-1$
                "UNDO",  // DB2 //$NON-NLS-1$
                "UNENCRYPTED", //$NON-NLS-1$
                "UNION",  // DB2 //$NON-NLS-1$
                "UNIQUE",  // DB2 //$NON-NLS-1$
                "UNKNOWN", //$NON-NLS-1$
                "UNLISTEN", //$NON-NLS-1$
                "UNLOCK", //$NON-NLS-1$
                "UNNAMED", //$NON-NLS-1$
                "UNNEST", //$NON-NLS-1$
                "UNSIGNED", //$NON-NLS-1$
                "UNTIL",  // DB2 //$NON-NLS-1$
                "UPDATE",  // DB2 //$NON-NLS-1$
                "UPDATETEXT", //$NON-NLS-1$
                "UPPER", //$NON-NLS-1$
                "USAGE",  // DB2 //$NON-NLS-1$
                "USE", //$NON-NLS-1$
                "USER",  // DB2 //$NON-NLS-1$
                "USER_DEFINED_TYPE_CATALOG", //$NON-NLS-1$
                "USER_DEFINED_TYPE_CODE", //$NON-NLS-1$
                "USER_DEFINED_TYPE_NAME", //$NON-NLS-1$
                "USER_DEFINED_TYPE_SCHEMA", //$NON-NLS-1$
                "USING",  // DB2 //$NON-NLS-1$
                "UTC_DATE", //$NON-NLS-1$
                "UTC_TIME", //$NON-NLS-1$
                "UTC_TIMESTAMP", //$NON-NLS-1$
                "VACUUM", //$NON-NLS-1$
                "VALID", //$NON-NLS-1$
                "VALIDATE", //$NON-NLS-1$
                "VALIDATOR", //$NON-NLS-1$
                "VALIDPROC",  // DB2 //$NON-NLS-1$
                "VALUE", //$NON-NLS-1$
                "VALUES",  // DB2 //$NON-NLS-1$
                "VAR_POP", //$NON-NLS-1$
                "VAR_SAMP", //$NON-NLS-1$
                "VARBINARY", //$NON-NLS-1$
                "VARCHAR", //$NON-NLS-1$
                "VARCHAR2", //$NON-NLS-1$
                "VARCHARACTER", //$NON-NLS-1$
                "VARIABLE",  // DB2 //$NON-NLS-1$
                "VARIABLES", //$NON-NLS-1$
                "VARIANT",  // DB2 //$NON-NLS-1$
                "VARYING", //$NON-NLS-1$
                "VCAT",  // DB2 //$NON-NLS-1$
                "VERBOSE", //$NON-NLS-1$
                "VIEW",  // DB2 //$NON-NLS-1$
                "VOLATILE", //$NON-NLS-1$
                "VOLUMES",  // DB2 //$NON-NLS-1$
                "WAITFOR", //$NON-NLS-1$
                "WHEN",  // DB2 //$NON-NLS-1$
                "WHENEVER", //$NON-NLS-1$
                "WHERE",  // DB2 //$NON-NLS-1$
                "WHILE",  // DB2 //$NON-NLS-1$
                "WIDTH_BUCKET", //$NON-NLS-1$
                "WINDOW", //$NON-NLS-1$
                "WITH",  // DB2 //$NON-NLS-1$
                "WITHIN", //$NON-NLS-1$
                "WITHOUT", //$NON-NLS-1$
                "WLM",  // DB2 //$NON-NLS-1$
                "WORK", //$NON-NLS-1$
                "WRITE",  // DB2 //$NON-NLS-1$
                "WRITETEXT", //$NON-NLS-1$
                "X509", //$NON-NLS-1$
                "XOR", //$NON-NLS-1$
                "YEAR",  // DB2 //$NON-NLS-1$
                "YEAR_MONTH", //$NON-NLS-1$
                "YEARS",  // DB2 //$NON-NLS-1$
                "ZEROFILL", //$NON-NLS-1$
                "ZONE" //$NON-NLS-1$
        };

        RESERVED_WORDS = new HashSet<String>(words.length);

        for (String word : words) {
            RESERVED_WORDS.add(word);
        }
    }

    public static boolean containsWord(String word) {
        boolean rc;

        if (word == null) {
            rc = false;
        } else {
            rc = RESERVED_WORDS.contains(word.toUpperCase());
        }

        return rc;
    }

    /**
     * Utility class - no instances allowed
     */
    private SqlReservedWords() {
    }
}
